// (c) Copyright 2013-2015, 2023 Advanced Micro Devices, Inc. All rights reserved.
//
// This file contains confidential and proprietary information
// of AMD and is protected under U.S. and international copyright
// and other intellectual property laws.
//
// DISCLAIMER
// This disclaimer is not a license and does not grant any
// rights to the materials distributed herewith. Except as
// otherwise provided in a valid license issued to you by
// AMD, and to the maximum extent permitted by applicable
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
// (2) AMD shall not be liable (whether in contract or tort,
// including negligence, or under any other theory of
// liability) for any loss or damage of any kind or nature
// related to, arising under or in connection with these
// materials, including for any direct, or any indirect,
// special, incidental, or consequential loss or damage
// (including loss of data, profits, goodwill, or any type of
// loss or damage suffered as a result of any action brought
// by a third party) even if such damage or loss was
// reasonably foreseeable or AMD had been advised of the
// possibility of the same.
//
// CRITICAL APPLICATIONS
// AMD products are not designed or intended to be fail-
// safe, or for use in any application requiring fail-safe
// performance, such as life-support or safety devices or
// systems, Class III medical devices, nuclear facilities,
// applications related to the deployment of airbags, or any
// other applications that could lead to death, personal
// injury, or severe property or environmental damage
// (individually and collectively, "Critical
// Applications"). Customer assumes the sole risk and
// liability of any use of AMD products in Critical
// Applications, subject only to applicable laws and
// regulations governing limitations on product liability.
//
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
// PART OF THIS FILE AT ALL TIMES.
////////////////////////////////////////////////////////////

// ***************************
// * DO NOT MODIFY THIS FILE *
// ***************************

`timescale 1ps/1ps

module gtwizard_top #(
    //
)(
    // Transceiver common block ports
    
    input         gtwiz_reset_clk_freerun_in    ,
    input         gtrefclk00_in                 ,
    input         gtrefclk01_in                 ,
    input         reset_all_in                  ,
    
    //input  [1:0]  rxn_in                        ,
    //input  [1:0]  rxp_in                        ,
    output [0:0]  txn_out                       ,
    output [0:0]  txp_out                       ,

    input  [24:0] sdm1data_in                   ,
    input         sdm1reset_in                  ,
    input         sdm1toggle_in                 ,
    input  [1:0]  sdm1width_in                  ,

    output        qpll0lock_out                 ,
    output        qpll0outclk_out               ,
    output        qpll0outrefclk_out            ,
    input         qpll0reset_in                 ,
    //output        qpll1lock_out                 ,
    //output        qpll1outclk_out               ,
    //output        qpll1outrefclk_out            ,

    //output [1:0]  gtpowergood_out               ,    
    output        rxoutclk_out                  ,
    output        txoutclk_out       
);
    wire [0:0] txpmaresetdone_int;
    wire [0:0] rxpmaresetdone_int;
    wire [0:0] gtwiz_userclk_tx_reset_int;
    wire [0:0] gtwiz_userclk_rx_reset_int;
    wire [0:0] hb0_gtwiz_userclk_tx_reset_int;
    wire [0:0] hb0_gtwiz_userclk_rx_reset_int;
    assign gtwiz_userclk_tx_reset_int[0:0] = hb0_gtwiz_userclk_tx_reset_int;
    assign gtwiz_userclk_rx_reset_int[0:0] = hb0_gtwiz_userclk_rx_reset_int;
    assign hb0_gtwiz_userclk_tx_reset_int = ~(&txpmaresetdone_int);
    assign hb0_gtwiz_userclk_rx_reset_int = ~(&rxpmaresetdone_int);

    gtw_qpll0_1 gtw_qpll0_1_inst (
        //.gthrxn_in                          (rxn_in                     ),
        //.gthrxp_in                          (rxp_in                     ),
        .gthtxn_out                         (txn_out                    ),
        .gthtxp_out                         (txp_out                    ),
        .gtwiz_userclk_tx_reset_in          (gtwiz_userclk_tx_reset_int ),
        .gtwiz_userclk_tx_usrclk2_out       (txoutclk_out               ),
        .gtwiz_userclk_rx_reset_in          (gtwiz_userclk_rx_reset_int ),
        .gtwiz_userclk_rx_usrclk2_out       (rxoutclk_out               ),
        .gtwiz_reset_all_in                 (reset_all_in               ),
        .gtwiz_reset_clk_freerun_in         (freerun_buf_int            ),
        .gtrefclk00_in                      (gtrefclk00_in              ),
        .gtrefclk01_in                      (gtrefclk01_in              ),
        .qpll0lock_out                      (qpll0lock_out              ),
        .qpll0outclk_out                    (qpll0outclk_out            ),
        .qpll0outrefclk_out                 (qpll0outrefclk_out         ),
        .qpll0reset_in                      (qpll0reset_in              ),
        .qpll1lock_out                      (qpll1lock_out              ),
        .qpll1outclk_out                    (qpll1outclk_out            ),
        .qpll1outrefclk_out                 (qpll1outrefclk_out         ),
        .gtwiz_reset_rx_datapath_in         (1'b0                       ),
        .gtwiz_reset_rx_pll_and_datapath_in (1'b0                       ),
        .gtwiz_reset_tx_datapath_in         (1'b0                       ),
        .gtwiz_reset_tx_pll_and_datapath_in (1'b0                       ),
        .gtwiz_userdata_tx_in               (63'b0                      ),
        .rxcommadeten_in                    (2'b0                       ),
        .rxmcommaalignen_in                 (2'b0                       ),
        .rxpcommaalignen_in                 (2'b0                       ),
        .rx8b10ben_in                       (2'b0                       ),
        .txctrl0_in                         (31'b0                      ),
        .txctrl1_in                         (31'b0                      ),
        .txctrl2_in                         (31'b0                      ),
        .tx8b10ben_in                       (2'b0                       ),

        .sdm1data_in                        (sdm1data_in                ),
        .sdm1reset_in                       (sdm1reset_in               ),
        .sdm1toggle_in                      (sdm1toggle_in              ),
        .sdm1width_in                       (sdm1width_in               ),

        .gtpowergood_out                    (gtpowergood_out            ),
        .rxpmaresetdone_out                 (rxpmaresetdone_int         ),
        .txpmaresetdone_out                 (txpmaresetdone_int         )
    );

    BUFG bufg_clk_freerun_inst (
        .I (gtwiz_reset_clk_freerun_in  ),
        .O (freerun_buf_int             )
    );

endmodule

